{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "6db7e326",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(70000,)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import fetch_openml\n",
    "import numpy as np\n",
    "\n",
    "# 读取数据集\n",
    "mnist = fetch_openml('mnist_784', parser='auto')\n",
    "# print(mnist)\n",
    "\n",
    "# 取特征数据和标签\n",
    "X, y = mnist[\"data\"], mnist[\"target\"]\n",
    "# print(X.shape)\n",
    "print(y.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "8cb88620-8c0b-4bc0-8a79-15305bc07615",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "14091    2\n",
      "26862    5\n",
      "56684    9\n",
      "17945    2\n",
      "45200    7\n",
      "51704    7\n",
      "22462    1\n",
      "43340    7\n",
      "49559    1\n",
      "17362    8\n",
      "Name: class, dtype: int32\n"
     ]
    }
   ],
   "source": [
    "# y值转int\n",
    "y = y.astype(int)\n",
    "# 数据集切分，拆分训练集和测试集\n",
    "X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]\n",
    "# print(X_train.shape)\n",
    "# print(y_train.shape)\n",
    "# print(X_train)\n",
    "# 洗牌操作\n",
    "shuffle_index = np.random.permutation(60000)\n",
    "# print(shuffle_index)\n",
    "# print(X_train.columns)\n",
    "X_train = X_train.loc[shuffle_index]  # 使用loc根据索引标签取值\n",
    "y_train = y_train[shuffle_index]  # series直接传入索引值即可\n",
    "\n",
    "print(y_train[:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "fe97c061-9834-4523-9872-9e4755585398",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "14091    False\n",
      "26862     True\n",
      "56684    False\n",
      "17945    False\n",
      "45200    False\n",
      "51704    False\n",
      "22462    False\n",
      "43340    False\n",
      "49559    False\n",
      "17362    False\n",
      "Name: class, dtype: bool\n",
      "预测值\n",
      " [False False False False False False False  True False False]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\app\\python38\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:713: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "# 分类,等于5和不等于5两类\n",
    "y_train_5 = (y_train == 5)\n",
    "y_test_5 = (y_test == 5)\n",
    "\n",
    "print(y_train_5[:10])\n",
    "\n",
    "# 基于随机梯度下降算法的分类器\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "\n",
    "# max_iter：最大迭代次数，random_state：用于控制随机数生成器的种子\n",
    "sgd_clf = SGDClassifier(max_iter=100, random_state=42)\n",
    "# 训练\n",
    "sgd_clf.fit(X_train, y_train_5)\n",
    "# 预测\n",
    "predict = sgd_clf.predict(X_test[:10])\n",
    "print(\"预测值\\n\", predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6df42e7f-17f3-4449-919f-eab19bbd4309",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\app\\python38\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:713: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
      "  warnings.warn(\n",
      "D:\\app\\python38\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:713: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-43818.44809381  12101.57837957 -80591.96390823 -52280.16228069\n",
      " -35374.98184951 -43414.30152941 -30952.44887712 -14927.41113029\n",
      " -41560.24208076 -46865.9944691 ]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\app\\python38\\lib\\site-packages\\sklearn\\linear_model\\_stochastic_gradient.py:713: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_predict\n",
    "# 生成阈值，并根据阈值生成精度和召回率\n",
    "y_scores = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3,\n",
    "                             method=\"decision_function\")\n",
    "# 打印得分前十个\n",
    "print(y_scores[:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "efa84e97-420d-46f1-ab42-1bec0dd97f5c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-220200.11508551 -199681.84952233 -186132.89590649 ...   51126.08950791\n",
      "   54642.80286271   59320.65041633]\n",
      "[0.09035    0.09035151 0.09035301 ... 1.         1.         1.        ]\n",
      "[1.00000000e+00 1.00000000e+00 1.00000000e+00 ... 3.68935621e-04\n",
      " 1.84467810e-04 0.00000000e+00]\n"
     ]
    }
   ],
   "source": [
    "# 引入准确率，召回率方法\n",
    "from sklearn.metrics import precision_recall_curve\n",
    "precisions,recalls,thresholds = precision_recall_curve(y_train_5,y_scores)\n",
    "# 阈值\n",
    "print(thresholds)\n",
    "# 精度\n",
    "print(precisions)\n",
    "# 召回率\n",
    "print(recalls)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "500bae7a-edee-410a-b0e8-d73e821e6b95",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 随着精度和召回率，在不同阈值的时候变化，需要综合考虑设置\n",
    "#ROC评估方法\n",
    "# tpr:准确率\n",
    "# fpr:失败率 \n",
    "# 期望是tpr值越大越好，fpr越小越好abs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "4e980009-f849-4e93-a144-052bb8c4f74b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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8fj6668REBCAxx9/HAkJCahXrx62bNmCVatWmfzbV6xYgfj4eGzYsAHBwcF48skn0bRpU/z444/o3bs33n/AcwyPHj2Ktm3b4vfff0e3bt3QtWtX3LhxA7Nnz8awYcNMrgM5FqmLFM39tf+gO5Z5TL983jx71YiIyH6c9p7PvLyK10mlgEJhWlkXF8DdvWpl8/MrnttPIrFfS8ixY8dw4cIFAEDbtm0N1q1ZswZ79+5Fx44dDZZnZGRgyJAhuHv3LpYuXYoXX3wRLi7af9vcvn0bTz/9NH766SckJydj5syZ+u0WLVqERYsWwd/fHxs2bECPHj0M9rt//36TusZnz56N4uJirF27FiNGjDBYp1QqcepUxQM9yjp+/DheeuklCCGwZs0ajBo1Sr9u27ZtGDRoEN577z088sgj6NWrV7ntP/30U7zzzjt4//33IZVKAQAnTpxAx44dsXnzZqSmpiI+Pt6kupBjiQqMwslbJ3H29ln9su7dgW++sV+diIjswWlbPr28Kn498YRh2cDAiss+9phh2cjIist27WpY9qGHKi4bG2vVn2+UUqnE1q1bMWTIEGg0GoSGhuLpp582KPP666+XC54AsHDhQty+fRuTJk3CxIkT9cETAPz9/bFmzRq4ublh8eLFEH8n7pKSEnz44YcAgM8//7xc8AS0A4zCdc8PfIDMzEwAQN++fcut8/HxMVpnYz799FOUlJRg8ODBBsETAB577DGMHz8eAPDJJ58Y3b59+/b48MMP9cETAKKiovT7+vnnn02qBzme+t71AQDXckq73SdP1s7vWVBgr1oREdme04ZP0ho7dqz+fk5fX1/069cP58+fR+PGjbF161Z4enoalH/yySeN7mfLli0AgKFDhxpdHxYWhqZNm+LWrVs4d+4cAO09mrdu3UJAQAAGDx5crd/RoUMHAMCIESOwZ8+eB95f+iApKSkAUOG9oM8//zwA4Pfff4darS63vn///kafyd6yZUsAwLVr18qtI+egC59Xcq4YLJdIDHtaiIgcndN2u9+7V/G6Mo1WAICbNysu63JffC8z9qbSsmlpD+52t4Wy83zqBtZ07NgRffr0gatr+T+PyMhIo/vRddN36dKl0mPeunULzZo1w+W/H0rdvHlzo4HNHMnJyTh27Bi2bduGbdu2wd3dHe3atUP37t0xYsQIffirjC4cNqxg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BxEVFSXkcrlo0aKF+Pzzzw3W2/JaaYnrtq1IhBDChr38REREROTEHHq0OxERERHVLAyfRERERGQzDJ9EREREZDMMn0RERERkMwyfRERERGQzDJ9EREREZDMMn0RERERkMwyfRERERGQzDJ9EVKNJJBKzX927dwcApKSkGHyvbS5dugSJRILIyEibHK8650t37omIKuNq7woQET3Is88+W25ZRkYGduzYUeH6Fi1aWL1eRERUNQyfRFSjrV69utyylJQUffg0tp6IiGoudrsTERERkc0wfBKRUyguLsY//vEPPPzww3B3d4e/vz+GDBmCU6dOlStb9l5LtVqNBQsWIDo6Gl5eXuXuazx79ixefPFFNG7cGAqFAj4+PujatSvWrl1rtB5KpRIzZsxAq1at4OnpCblcjtDQUHTq1AkzZ85EcXGx0e2EEPj888/Rvn17eHp6wsfHB71790ZqamqFv/nq1auYMmUKmjZtqq9bp06d8Nlnn0GtVptx9rRSU1Px2GOPwdfXF15eXoiJicHKlSvN3g8ROTd2uxORwysuLkbfvn2xb98+dO3aFS1btsT+/fuxadMm/Prrrzhy5IjRQT1CCAwZMgTbt29Hly5d0LJlS5w8eVK/fsOGDRg9ejQKCwvRokUL9O3bF0qlEn/++SdGjRqFX375xSCc5efno3Pnzjhx4gTq1auHnj17wtPTExkZGTh9+jT27duHpKQk+Pr6lqvL2LFj8dVXX6FLly7o378/jh49ip07d2L37t347bffEBcXZ1D+wIED6NOnD7KzsxEREYFBgwZBqVQiJSUF+/btw6ZNm/D9999DJpOZdA43bNiA4cOHQ61WIyoqCq1atcKVK1fwwgsvGJwTIqJKCSKiWubXX38VAERll7Cy5aKjo8WNGzf06woKCkRiYqIAIMaPH2+w3cWLF/Xb1a9fX5w5c6bcvo8dOybkcrlQKBTim2++MVh36dIl0apVKwFAfPnll/rlX375pQAgHnvsMVFUVGSwjVqtFikpKUKlUhmtR4MGDQzqUVJSIp577jkBQPTu3dtgX4WFhaJBgwYCgJgwYYLBsc6fPy8iIyMFAPH2228bPV/dunUzWH7jxg1Rp04dAUAsWLDAYN3PP/8sFAqFSf97EBEJIQS73YnI4UkkEqxatQrBwcH6ZQqFAu+//z4A4Oeff65w248//hjNmjUrt3z27NlQqVT46KOPMGTIEIN1DRo0wBdffAEA+Ne//qVfnpmZCQDo1asX3NzcDLZxcXFBt27dKmyJXLRokUE9pFIpZs+eDQD47bffDLrrN2zYgMuXLyM0NBQLFy40OFajRo0wb948/T4LCwsr/O06X3zxBXJzc9GxY0e8+uqrBut69uyJF198sdJ9EBHpMHwSkcOLiIhAmzZtyi1v2bIlAODatWsVbvvEE0+UW6bRaLBt2zYAwNChQ41uFxMTAy8vLxw5ckQf8GJjYwEAc+fOxZo1a5CdnW1S/V1dXdGnT59yy4ODg+Hn5weVSoXbt2/rl6ekpAAAhg0bBrlcXm67IUOGwM/PD7m5uTh06FClx9ftb8SIEUbXG5vuioioIgyfROTwIiIijC739vYGAKhUKqPrAwMD4eHhUW757du3kZOTAwAIDw83OtG9i4sL7t27B41Gow+G3bt3x7Rp03Dz5k08++yzCAgIQPPmzfHcc8/hu+++g0ajMVqPkJCQci2l9/+Gsi2YujDdsGFDo9tIJBL9ugcFb52rV68+cH8VLSciMoYDjojI4bm4VO3f2e7u7kaXlw2JprT6lW19nDNnDiZMmIAffvgBe/bswd69e7Fq1SqsWrUKsbGx+PXXX+Hp6WmR+hMR1UQMn0REZgoICIC7uzsKCgowb948BAQEmLV9ZGQkpkyZgilTpgDQjkwfOXIkDhw4gLlz5+rvRa2qsLAwAMCFCxcqLHPx4kWDspXt7/Tp07h06ZLR9RUtJyIyhv+cJiIyk1QqRa9evQAAX3/9dbX3Fxsbi5deegkAcPTo0WrvT/ds9vXr1xsdULRp0ybcuXMHderUQfv27SvdX7du3QAA//3vf42uX7NmTdUrS0ROh+GTiKgKZs2aBZlMhjfeeANffvml0fs1T5w4gW+//Vb/fdOmTdi9e3e5ssXFxdi+fTsA7Uj56nrqqacQERGB69evIykpCSUlJfp1Fy9exGuvvQYAmDJlChQKRaX7e/755+Hl5YXU1FSD0fuAdjDS8uXLq11nInIeDJ9ERFXQrl07/VOMxowZgwYNGiAxMREjR45E3759ER4ejlatWhm0jP7222/o1q0bgoKC0Lt3b4wcORKPP/446tevj+3btyMsLAxvvvlmtesml8uxceNG1K1bF8uWLUOTJk0wbNgw9OvXDw899BAuXryIxMREzJo1y6T9hYaGYsWKFZBKpZg6dSpat26NZ555Bt26dcOjjz6KCRMmVLvOROQ8eM8nEVEVPfXUU4iNjcW//vUv7Ny5E3v37oVarUZQUBCaNGmCyZMn48knn9SXHzNmDNzd3bFnzx6kpaXht99+g4+PDyIiIvDKK69g/Pjx8Pf3t0jdYmNjcfToUfzjH//Atm3bsGnTJsjlckRHR2P06NF44YUX4Opq+n8Chg0bhvr16+Ojjz5Camoqzp8/j+bNm2P58uUYP348/vnPf1qk3kTk+CRCCGHvShARERGRc2C3OxERERHZDMMnEREREdkMwycRERER2QzDJxERERHZDMMnEREREdkMwycRERER2QzDJxERERHZDMMnEREREdkMwycRERER2QzDJxERERHZDMMnEREREdkMwycRERER2cz/A9NeOrC1xNBMAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 800x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "def plot_precision_recall_vs_threshold(precisions,recalls,thresholds):\n",
    "    plt.plot(thresholds,\n",
    "             precisions[:-1],\n",
    "            \"b--\",\n",
    "            label=\"Precision\")\n",
    "    \n",
    "    plt.plot(thresholds,\n",
    "             recalls[:-1],\n",
    "            \"g-\",\n",
    "            label=\"Recall\")\n",
    "    plt.xlabel(\"Threshold\",fontsize=16)\n",
    "    plt.legend(loc=\"upper left\",fontsize=16)\n",
    "    plt.ylim([0,1])\n",
    "    \n",
    "plt.figure(figsize=(8, 4))\n",
    "plot_precision_recall_vs_threshold(precisions,recalls,thresholds)\n",
    "plt.xlim([-700000, 700000])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "82436bae-b64a-4ba9-a875-25993ae9dcf0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.00000000e+00 0.00000000e+00 0.00000000e+00 1.83220653e-05\n",
      " 1.83220653e-05 3.66441305e-05 3.66441305e-05 5.49661958e-05\n",
      " 5.49661958e-05 7.32882611e-05]\n",
      "[0.         0.00018447 0.00276702 0.00276702 0.01309721 0.01309721\n",
      " 0.02158273 0.02158273 0.02305848 0.02305848]\n",
      "[           inf 59320.65041633 43129.77077548 43126.70654077\n",
      " 35666.42056024 35432.85058129 31939.14894632 31817.98586076\n",
      " 31368.80557653 31351.28241995]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import roc_curve\n",
    "fpr, tpr, thresholds = roc_curve(y_train_5, y_scores)\n",
    "print(fpr[:10])\n",
    "print(tpr[:10])\n",
    "print(thresholds[:10])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "30b5a4f2-738f-465c-a366-2c35d44bbb41",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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atXKlFksCBsxFU1CCKxatQrvvfce0tLS4OPjgw0bNqB169ZSRyMiIrJYPKMmF/xEmYqilJQUjB49GuvWrQMAdOzYEWvXroWnp6fEyYiIiCwbP0PNBfswFUVyuRxnz56FQqHA7NmzsWvXLpZhIiKifOAIcS64DjEVFdknrsrlctjb2yMsLAxxcXFo3ry51NGIiIiKDI4Q54J9mIoCtVqN4OBgzJo1S7+vSpUqLMNEREQFlK8RYp1OZ+ocFoWFmCzdqVOnEBQUhGvXrmHbtm0YNmwYfHx8pI5FRERUJHGEOBcyziImCyWEwMKFC9G0aVNcu3YNZcuWxYEDB1iGiYiICoFziHPBEWKyRAkJCRg2bBi2bNkCAOjRowdWrlwJNzc3iZMREREVbSzEueCVvMjSaDQaNG3aFJcuXYKtrS2+++47jBs3jr+rRERERsApE7lgxSBLY2Njgw8++ADly5fHkSNH8P7777MMExERGQkLcS7YM8gSPHr0CBcuXNDfHjlyJM6ePYsGDRpImIqIiKj4YSHOBdchJqkdOXIEderUQdeuXZGQkAAgayqPo6OjtMGIiIiKIRbiXLAOk1R0Oh2+/fZbtGzZErdv34atrS0ePHggdSwiIqJijSfV5YaNmCQQFxeHQYMGYffu3QCAPn364Mcff0SJEiUkTkZERFS8sRDngusQk7n99ddf6NOnD+7duweVSoWFCxdi2LBhPHGOiIjIDFiIcyFnByEzCwkJwb1791C1alWEhYWhZs2aUkciIiKyGizEueCoHJnbihUrUL58ecycORNOTk5SxyEiIrIqPKkuFxkandQRqJjbv38/PvroIwghAADu7u4ICQlhGSYiIpIAR4hz4aTij4VMQ6vVYubMmfjyyy8hhEBgYCB69+4tdSwiIiKrxuaXC84hJlO4d+8e+vXrh4iICADAsGHD0LVrV2lDEREREQtxbnhhDjK233//Hf3790dcXBwcHR3x448/ol+/flLHIiIiInAOca7Yh8mY5s6di06dOiEuLg61a9fG6dOnWYaJiIgsCAtxLjhCTMZUt25dAMC7776LY8eOoXLlyhInIiIiomdxykQuWIipsB48eABPT08AQPv27XHu3DnUqFFD4lRERESUG44Q54In1ZGhMjMz8cknn6By5cq4du2afj/LMBERkeViIc4FL8xBhrh58yZatGiB7777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YahXr57UkYiIiIjMioXYCj18+BAlSpSAUqmEjY0NNm/eDAcHBzg7O0sdjYiIiMjseFLdc4r7VIGDBw+idu3amDhxon6ft7c3yzARERFZLRZiK6HT6TBr1iy0adMGd+/eRXh4OFJSUqSORURERCQ5FmIr8ODBA3Tq1AmfffYZtFot+vfvj5MnT8LR0VHqaERERESS4xzi5xS3GRMHDhxA3759ERMTA3t7eyxevBiDBw8u9lNDiIiIiPKLhfg5xakmJiYmomfPnnj8+DGqV6+OsLAw1KhRQ+pYRERERBaFhbgYc3Z2xo8//ojdu3dj4cKFnCJBRERElAsW4ucU9SvV7d27F3K5HG3btgUAvPPOO3jnnXckTkVERERkuXhS3XOK6tRajUaDqVOnokOHDujTpw/u378vdSQiIiKiIoEjxM8pin347t276NOnDw4ePAgA6NGjB1xdXaUNRURERFREsBAXcbt378bAgQMRHx8PJycnLFu2DMHBwVLHIiIiIioyOGXieUVkzoROp8PEiRPRpUsXxMfHo27dujh9+jTLMBEREVEBsRAXUXK5HDExMQCAsWPH4siRI6hUqZLEqYiIiIiKHk6ZeM75u2qpI7yURqOBjU3W27Z48WK888476Nq1q8SpiIiIiIoujhA/p46/q9QRcpWRkYEJEybg7bffhhACAODk5MQyTERERFRIHCF+jtwCpxBHR0cjKCgIJ0+eBABERESgTZs2EqciIiIiKh44QvwcS7swx5YtW1C3bl2cPHkSrq6u+PXXX1mGiYiIiIyIhfh5FtKH09PTMW7cOPTs2RNqtRqNGzdGVFQU3nzzTamjERERERUrLMTPsZA+jH79+mHRokUAgE8++QR//fUXypYtK3EqIiIiouKHhdhCTZw4ET4+PtixYwfmzJkDW1tbqSMRERERFUs8qe45Ul2XIy0tDSdOnECrVq0AAA0bNsT169ehUqmkCURERERkJThC/BwpTqq7cuUKGjdujI4dOyIqKkq/n2WYiIiIyPRYiJ9j7hHi9evXo379+jh79iycnZ2RkJBg3gBEREREVo6F+DnmKsSpqakYPnw4+vfvj5SUFLRu3RpRUVFo3bq1eQIQEREREQAW4heYY8rExYsX0ahRI6xYsQIymQzTp0/H3r174evra/LXJiIiIqKceFKdBH777TdcuHAB3t7eWL9+Pdq2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",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_roc_curve(fpr, tpr, label=None):\n",
    "    plt.plot(fpr, tpr, linewidth=2, label=label)\n",
    "    plt.plot([0, 1], [0, 1], 'k--')\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "    plt.xlabel('False Positive Rate', fontsize=16)\n",
    "    plt.ylabel('True Positive Rate', fontsize=16)\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plot_roc_curve(fpr, tpr)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "fa89dc47-d22d-4201-94ed-4ab9b7a8df69",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9670699322474632"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import roc_auc_score\n",
    "\n",
    "roc_auc_score(y_train_5, y_scores)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
